﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.DataVisualization.Charting;
using System.Web.UI.WebControls;

namespace FrontEndPlus.Módulos.RRHH
{
    public partial class wbfrm_Buscar_Empleado : System.Web.UI.Page
    {
        #region Variables

        private WCF_Gimnasio.cls_Empleado _empleado = new WCF_Gimnasio.cls_Empleado();

        #endregion

        #region Metodos

        private void CargarRegistroCompletoEmpleados()
        {
            using (WCF_Gimnasio.ServiceClient servicio = new WCF_Gimnasio.ServiceClient())
            {
                ViewState["RegistroCompletoEmpleados"] = servicio.Listar(1, _empleado).Tables[0];
            } 
        }

        private void CargarDatosEmpleado(string IdEmpleado)
        {
            var temp = Convert.ToInt32(IdEmpleado);

            if (temp < 0)
            {
                _empleado.Filtros[0] = IdEmpleado;
                _empleado.Filtros[1] = "Ft";

                using (WCF_Gimnasio.ServiceClient servicio = new WCF_Gimnasio.ServiceClient())
                {
                    ViewState["InformacionEmpleado"] = servicio.Listar(2, _empleado).Tables[0];
                }

                gv_informacion_Empleado.DataSource = (DataTable)ViewState["InformacionEmpleado"];
                gv_informacion_Empleado.DataBind();
            }
        }

        private void CargarGraficoEmpleado()
        {
            DataTable informacionEmpleado = (DataTable)ViewState["InformacionEmpleado"];

            ch_rendimiento_Empleado.DataSource = informacionEmpleado;
            ch_rendimiento_Empleado.DataBind();

            string[] x = new string[informacionEmpleado.Rows.Count];
            int[] y = new int[informacionEmpleado.Rows.Count];
            for (int i = 0; i < informacionEmpleado.Rows.Count; i++)
            {
                x[i] = informacionEmpleado.Rows[i][1].ToString();
                y[i] = Convert.ToInt32(informacionEmpleado.Rows[i][0]);
            }

            ch_rendimiento_Empleado.Series[0].Points.DataBindXY(x, y);
            ch_rendimiento_Empleado.Series[0].ChartType = SeriesChartType.Pie;
            ch_rendimiento_Empleado.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;
        }

        #endregion

        #region Eventos

        protected void Page_Load(object sender, EventArgs e)
        {
            _empleado.IdUsuarioInicioSeccion = Convert.ToInt32(HttpContext.Current.Session["idUsuario"].ToString());
            _empleado.Filtros = new string[2];

            if (!IsPostBack)
            {
                CargarRegistroCompletoEmpleados();
            }

            gv_informacion_Empleado.DataSource = (DataTable)ViewState["RegistroCompletoEmpleados"];
            gv_informacion_Empleado.DataBind();
        }

        protected void txt_busqueda_TextChanged(object sender, EventArgs e)
        {
            if (gv_informacion_Empleado.Rows.Count != 0)
            {
                if (!string.IsNullOrEmpty(txt_busqueda.Text) || !string.IsNullOrWhiteSpace(txt_busqueda.Text))
                {
                    try
                    {
                        CargarDatosEmpleado(txt_busqueda.Text);

                        CargarGraficoEmpleado();

                        ch_rendimiento_Empleado.Visible = true;
                    }

                    catch (Exception)
                    {
                        string script = "<script type='text/javascript'> smoke.alert('La busqueda se realiza por medio de ID Empleado.', function (e) {}, {ok: 'OK',classname: 'custom-class'}); </script>";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);
                    }
                }

                else
                {
                    CargarRegistroCompletoEmpleados();
                }
            }
        }

        protected void gv_informacion_Empleado_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gv_informacion_Empleado.PageIndex = e.NewPageIndex;

            CargarRegistroCompletoEmpleados();
        }

        protected void gv_informacion_Empleado_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (gv_informacion_Empleado.Rows.Count != 0)
            {
                var index = gv_informacion_Empleado.Rows[Convert.ToInt32(e.CommandArgument)].Cells[2].Text;
                Session["IdEmpleado"] = index;

                if (e.CommandName == "Mostrar Rendimiento")
                {
                    CargarDatosEmpleado(Session["IdEmpleado"].ToString());

                    CargarGraficoEmpleado();

                    ch_rendimiento_Empleado.Visible = true;
                }

                else if (e.CommandName == "Mostrar Expediente")
                {
                    Response.Redirect("wbfrm_Manejo_Personal.aspx?IdEmpleado=" + Session["IdEmpleado"].ToString(), true);
                }
            }
        }

        #endregion

    }
}